package com.x.provider.customer.service.customer;

import com.x.provider.api.customer.model.dto.customer.CustomerUserNameUpdateReqDTO;
import com.x.provider.customer.model.ao.*;
import com.x.provider.customer.model.domain.customer.Customer;
import com.x.provider.customer.model.domain.customer.CustomerPassword;
import com.x.provider.customer.model.domain.customer.Role;

import java.util.List;

public interface CustomerService {
    void register(UserNamePasswordRegisterAO userNamePasswordRegisterAO);
    String loginByPassword(LoginByPasswordAO userNamePasswordLoginAO);
    String loginOrRegisterBySms(LoginOrRegBySmsAO loginOrRegByPhoneAO);
    void checkPhoneBound(long customerId, ValidatePhoneAO validatePhoneAO);
    void bindPhone(long customerId, BindPhoneAO bindPhoneAO);
    void changePassword(long customerId, ChangePasswordByOldPasswordAO changePasswordAO);
    void changePhone(long customerId, ChangePhoneAO changePhoneAO);
    void changeUserName(CustomerUserNameUpdateReqDTO customerUserNameUpdateDTO);
    Role getRole(String systemName);
    Customer getCustomer(String userName);
    Customer getCustomer(long id);
    CustomerPassword getCustomerPassword(long customerId);
    List<Role> listCustomerRole(long customerId);
    Customer registerCustomer(Customer customer);
    List<Customer> listCustomer(List<Long> idList);
}
